#!/usr/bin/python3
# _*_ coding: utf-8 _*_
#
# Copyright (C) 2022 - 2022 heihieyouheihei, Inc. All Rights Reserved 
#
# @Time    : 2022/12/11 14:31
# @Author  : heihieyouheihei
# @File    : base4_grammar_10.py
# @IDE     : PyCharm
# 添加,修改和删除列表元素(也就是更新元素)

# 添加元素:append(), 这种方法添加的元素会直接添加到列表的末尾
# 列表1.append(新元素) = [列表1, 新元素]
phone = ["摩托罗拉","诺基亚","三星","OPPO"]    # 定义了一个字符串类型的列表
print(len(phone))    # len()看一下列表的长度
phone.append("华为")    # 新添加的元素
print(len(phone))    # 看一下添加之后列表的长度
print(phone)   # 输出打印看一看新的列表

# insert()方法可以向列表指定位置添加元素, insert()方法执行效率没有append()方法执行效率高, 除非必要情况, 不推荐使用
phone = ["摩托罗拉","诺基亚","三星","OPPO"]
# 在第一个元素之前添加一个元素, 索引值为0
phone.insert(0,"没有手机")    # insert(索引值,要添加的位置,"要添加的元素内容")
print("insert()添加元素位置之后的结果: ",phone)
# 在索引值为2的前面添加元素(分析:索引值为2的前面添加, 添加之后这个值的索引值还是2)
phone.insert(2,"我没有手机")
print("在索引值为2的元素前面添加元素的结果: ",phone)

# 如何把一个列表中的所有元素全部添加到另外一个列表中呢? 可以使用extend()方法
# listname(列表名称).extend(seq)
oldlist = ["乔丹","贾巴尔","奥拉朱旺","巴克利","姚明"]
newlist = ["基德","纳什","希尔"]
# 现在想把newlist列表内容添加到oldlist列表中
oldlist.extend(newlist)
print("看一下添加之后的oldlist列表的内容: ",oldlist)

# 修改列表的元素
# 修改列表的元素:首先通过索引获取到这个元素,然后在为它重新赋值就行
list1 = ["长亭外","古道边","芳草碧连天"]    # 现在想把"芳草碧连天"换成"一行白鹭上青天",首先要通过索引获取到"芳草碧连天"
list1[2] = "一行白鹭上青天"    # 通过索引获取到这个元素,然后在为它重新赋值就行
print("看一下修改后的结果:",list1)

# 删除元素, 删除元素只要有两种办法
# 1. 根据索引删除(使用del语句), 通过索引必须知道元素的位置, 如果不知道元素的位置就不能通过索引进行删除
# 2. 根据元素的值进行删除, 这种删除不需要知道元素的具体位置

list2 = ["周一","周二","周三","周四"]    # 现在想删掉"周四"这个元素, "周四"这个元素的索引值为3
del list2[3]    # 根据索引删除(使用del语句) del 要删除的列表[删除元素的索引值]
print("通过del()删除列表元素:",list2)
# 如果列表太长, 从正数数太麻烦, 也可以使用负数的索引, 使用负数的索引就是从右往左数, -1,-2,...
del list2[-1]
print("通过负数索引进行删除的效果:",list2)    # 这里的输出结果也会把"周三"删除, 因为在上面的删除中, 周四已经被删除, 在删除索引值为-1 的元素就是删除"周三"

# 不知道元素位置(也就是不知道元素的索引值)进行删除, remove()方法
list3 = ["中国","美国","俄罗斯","英国","法国"]
# 不通过索引,直接删除, 使用remove()方法
list3.remove("美国")
print("通过remove方法进行删除: ",list3)

# 下面是结合if语句自己写着玩的
list4 = ["数分","高代","概率论","线性回归","多元统计"]
if "英语" in list4:
    list4.remove("英语")
else:
    list4.remove("多元统计")
print("试着玩的结果:",list4)